﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Comissoes.Models
{
    public class TransportadoresModel
    {
        public TRANSPORTADORES transportador { get; set; }
        private PessoasModel pessoa { get; set; }        

        List<string> erros;

        public TransportadoresModel()
        {
            TRANSPORTADORES transportador = new TRANSPORTADORES();
            transportador.PESSOAS = new PESSOAS();
            pessoa = new PessoasModel();

            this.transportador = transportador;
        }

        public TransportadoresModel(Int32? id)
        {
            xcontEntities db = new xcontEntities();

            if (id.HasValue && id != 0)
            {
                this.transportador = db.TRANSPORTADORES.Include("PESSOAS").FirstOrDefault(t => t.COD_TRAN == id);
            }
            else
            {
                TRANSPORTADORES transportador = new TRANSPORTADORES();
                transportador.PESSOAS = new PESSOAS();
                pessoa = new PessoasModel();

                this.transportador = transportador;
            }
        }

        public List<string> UpdateValidate(FormCollection form)
        {
            erros = new List<string>();

            erros.Union(pessoa.UpdateValidate(form));

            return erros;
        }

        public List<string> Update(FormCollection form)
        {
            xcontEntities db = new xcontEntities();
            erros = new List<string>();

            try
            {
                this.pessoa.Update(db, form);

                if (db.CLIENTES.Any(t => t.COD_CLI == this.transportador.COD_TRAN))
                    this.transportador = db.TRANSPORTADORES.FirstOrDefault(t => t.COD_TRAN == this.transportador.COD_TRAN);
                else
                    db.AddToTRANSPORTADORES(this.transportador);

                this.transportador.PESSOAS = this.pessoa.pessoa;

                this.transportador.ATIVO_TRAN = form["ATIVO_TRAN"].Contains("true") ? "A" : "B";

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                erros.Add(ex.Message);
                if (ex.InnerException != null)
                    erros.Add(ex.InnerException.Message);
            }

            return erros;
        }
    }
}